﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

//输入一个整数数组，实现一个函数，
//来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分，
//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//		if (i % 2 == 1)
//		{
//			printf("%d ", i);	
//		}
//	}
//	for (int i = 0; i < 10; i++)
//	{
//		if (arr[i] % 2 == 0)
//		{
//			printf("%d ", arr[i]);
//		}
//	}
//	
//	return 0;
//}

//int count = 0;
//int len(char* ch)
//{
//	while (*(ch++) != '\0')
//	{
//		count++;
//	}
//	return count;
//}
//
//int main()
//{
//	char ch[100] = { 0 };
//	gets(ch);
//	int slen = len(ch);
//	printf("%d", slen);
//	return 0;
//}

//int main()
//{
//	char arr[30] = {0};
//	gets(arr);
//	int left = 0;
//	int right = strlen(arr) - 1;
//	while (left <= right)
//	{
//		char tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//	printf("%s", arr);
//	return 0;
//}

//5位运动员参加了10米台跳水比赛，有人让他们预测比赛结果：
//A选手说：B第二，我第三；
//B选手说：我第二，E第四；
//C选手说：我第一，D第二；
//D选手说：C最后，我第三；
//E选手说：我第四，A第一；
//比赛结束后，每位选手都说对了一半
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	int e = 0;
//	for (a = 1; a <= 5; a++)
//	{
//		for (b = 1; b <= 5; b++)
//		{
//			for (c = 1; c <= 5; c++)
//			{
//				for (d = 1; d <= 5; d++)
//				{
//					for (e = 1; e <= 5; e++)
//					{
//						if (((b == 2) + (a == 3) == 1) &&
//							((b == 2) + (e == 4) == 1) &&
//							((c == 1) + (d == 2) == 1) &&
//							((c == 5) + (d == 3) == 1) &&
//							((e == 4) + (a == 1) == 1))
//							if (a * b * c * d * e == 120)
//							{
//								printf("a= %d b= %d c= %d d= %d e= %d\n", a, b, c, d, e);
//							}
//					}
//				}
//			}
//		}
//	}
//	return 0;
//}

//日本某地发生了一件谋杀案，警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
//以下为4个嫌疑犯的供词:
//A说：不是我。
//B说：是C。
//C说：是D。
//D说：C在胡说
//已知3个人说了真话，1个人说的是假话。
//int main()
//{
//	char tmp = 0;
//	for (tmp = 'A'; tmp <= 'D'; tmp++)
//	{
//		if ((tmp != 'A') + (tmp == 'C') + (tmp == 'D') + (tmp != 'D') == 3)
//		{
//			printf("%c\n", tmp);
//		}
//	}
//	return 0;
//}

//struct Point
//{
//	int x;
//	int y;
//};
//
//int main()
//{
//	struct Point p = { 3, 4 };
//	struct Point* ptr = &p;
//	ptr->x = 10;
//	ptr->y = 20;
//	printf("x = %d y = %d\n", ptr->x, ptr->y);
//	return 0;
//}

//struct Point
//{
//	int x;
//	int y;
//}p = { 1,2 };
//int main()
//{
//	printf("x: %d y: %d\n", p.x, p.y);
//	return 0;
//}

//void test1()
//{
//	printf("hehe\n");
//}
//void test2(const char* str)
//{
//	printf("%s\n", str);
//}
//int main()
//{
//	test1(); //这⾥的()就是作为函数调⽤操作符。
//	test2("hello");//这⾥的()就是函数调⽤操作符。
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = (a > b, a = b + 10, a, b = a + 1);//逗号表达式
//	printf("%d", c);
//	return 0;
//}

//int main()
//{
//	int a = 4;//2进制 100 非0表示真
//	int b = 5;//2进制 101
//	printf("%d\n", !a);//表示假 返回0
//	printf("%d\n", a++);//先使用后++  输出4 ，但a是5
//	printf("%d\n", ++a);//先++再使用  输出6 ，a还是6
//	printf("%d\n", a--);//先使用再--  输出6 ，但a是5
//	printf("%d\n", --a);//先--再使用  输出4 ，a还是4
//	printf("%d\n", a&b);//逻辑与2进制运算,相同为1 不同为0  100 & 101 -> 100
//	printf("%d\n", a+b);
//	printf("%d\n", a-b);
//	printf("%d\n", a*b);
//	printf("%d\n", ~a);//2进制取反
//	//int 型 x86 环境下32位 a的2进制
//	//00000000000000000000000000000100
//	//11111111111111111111111111111011 取反  ~a的反码
//	//10000000000000000000000000000101  ~a的原码
//	printf("%zd\n", sizeof(a));//int 为4个字节
//	return 0;
//}

//int main()
//{
//	int a = 13;
//	a = a | (1 << 4);
//	printf("a = %d\n", a);
//	a = a & ~(1 << 4);
//	printf("a = %d\n", a);
//	return 0;
//}

//int main()
//{
//	int num1 = -3;
//	int num2 = 5;
//	printf("%d\n", num1 & num2);
//	printf("%d\n", num1 | num2);
//	printf("%d\n", num1 ^ num2);
//	printf("%d\n", ~0);
//	return 0;
//}

//int main()
//{
//	int num = 10;
//	int n = num >> 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//}

//int main()
//{
//	int num = 10;
//	int n = num << 1;
//	printf("n= %d\n", n);
//	printf("num= %d\n", num);
//	return 0;
//}